-
Notifications
You must be signed in to change notification settings - Fork 17
Deleted @Transactional and added @AfterEach in tests #34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
А давайте лучше очищать базу не после теста, а перед каждым тестом. В большинстве случаев очистка после теста стработает нормально, но не во всех. Нет абсолютной гарантии, что AfterEach выполнится (например, свет отключили). Тогда база останется не очищенной. Очистка базы перед тестом должна решить эту проблему |
|
@funnyDevGirl Алина, приветствую! Вы доработаете этот ПР? |
|
@Malcom1986 Максим, здравствуйте! |
|
Дополнительно скорректировала следующий момент: Использовать get() без предварительной проверки на isPresent() - плохая практика. // плохо
var post = postRepository.findBySlug(testPost.getSlug()).get();
// хорошо
var post = postRepository.findBySlug(testPost.getSlug()).orElseThrow(); |
| .andExpect(status().isCreated()); | ||
|
|
||
| var post = postRepository.findBySlug(testPost.getSlug()).get(); | ||
| var post = postRepository.findBySlug(testPost.getSlug()).orElseThrow(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Давайте тут лучше не бросать исключение, ловить то это исключение некому. А вместо этого использовать orElse и возвращать null, тем более что ниже мы проверяем пост на null. В случае, если пост мы не найдем, вывод будет более информативный, чем тесты просто упадут с исключением
|
@Malcom1986 |
Приветствую!
Когда в тесте используется @transactional, то в классах доменных моделей будут загружены и поля с ленивой загрузкой, т.е. там, где потенциально могло вылететь исключение LazyInitializationException, оно не вылетет, и тест покажет ложный результат.
Есть и другие возможные проблемы, подробнее:
https://dev.to/henrykeys/don-t-use-transactional-in-tests-40eb
Рекомендуется писать тесты без @transactional и удалять данные вручную или использовать расширения.